package com.ipartek.pruebas.bean;

import com.ipartek.pruebas.bean.VehiculoP1;
import com.ipartek.pruebas.interfaces.DriveableP1;

/**
 * 
 * @author practicas1
 * 
 */
public class AutomobileP1 extends VehiculoP1 implements DriveableP1, Cloneable {

	private int numPasajeros;

	/**
	 * Constructor vacio de la clase
	 */
	public AutomobileP1() {
		super();
		this.numPasajeros = 0;

	}

	/**
	 * Constructor de la clase con parametros de entrada del padre y numero de
	 * pasajeros
	 * 
	 * @param marca
	 *            String Marca del Automobil
	 * @param modelo
	 *            String Modelo
	 * @param potencia
	 *            int Potencia
	 * @param traccion
	 *            boolean si tiene traccion
	 * @param numPasajeros
	 *            int numero de pasajeros para el vehiculo
	 */
	public AutomobileP1(String marca, String modelo, int potencia,
			boolean traccion, int numPasajeros) {
		super(marca, modelo, potencia, traccion);
		this.numPasajeros = numPasajeros;

	}

	/**
	 * Constructor de la clase con parametros de entrada un Object de la clase
	 * padre y el numero de pasajeros
	 * 
	 * @param v
	 *            Objeto vehiculo
	 * @param numPasajeros
	 *            numero de pasajeros para el vehiculo
	 */
	public AutomobileP1(VehiculoP1 v, int numPasajeros) {
		super(v.getMarca(), v.getModelo(), v.getPotencia(), v.isTraccion());
		this.numPasajeros = numPasajeros;
	}

	/**
	 * Metodo encargado de realizar el inicio de la marcha
	 */
	@Override
	public boolean startEngine() {

		return false;
	}

	/**
	 * Metodo encargado de frenar el automovil
	 */
	@Override
	public void stopEngine() {

	}

	/**
	 * Metodo encargado de acelerar
	 * 
	 * @param acc
	 *            float con la cantidad de aceleracion
	 * @return en este caso es 0
	 */
	@Override
	public float accelerate(float acc) {

		return 0;
	}

	/**
	 * Metodo encargado de realizar el cambio de direccion
	 * 
	 * @param dir
	 *            int direccion
	 */
	@Override
	public boolean turn(int dir) {

		return false;
	}

	/**
	 * Metodo encargado de obtener la region
	 * 
	 * @return String vacio
	 */
	@Override
	public String getRegion() {
		String s = "";
		return s;
	}

	/**
	 * Metodo de obtencion del numero de pasajeros
	 * 
	 * @return int numero de pasajeros
	 */
	public int getPasajeros() {
		return numPasajeros;
	}

	/**
	 * Metodo de modificacion del numero de pasajeros
	 * 
	 * @param numPasajeros
	 *            numero de pasajeros
	 */
	public void setPasajeros(int numPasajeros) {
		this.numPasajeros = numPasajeros;
	}

	/**
	 * Redefinicion del metodo toString
	 */
	@Override
	public String toString() {
		return "marca=" + marca + ", modelo=" + modelo + ", potencia="
				+ potencia + ", traccion=" + traccion + ", numero pasajeros="
				+ numPasajeros;
	}

}
